NAT(Network Address Translation)是一种用于解决 IP 地址过少问题的技术,本质算法就是将 私有 IP 地址 和唯一的 公网 IP 上的诸多 端口 建立映射,实现网络层通信。
NAT 的表项需要管理员手动添加
NAT 也存在诸多弊端
NAT 违反了 IP 的模型规定:每个 IP 地址表示一个单独的机器
NAT 打破了 Internet 的端到端模型:接收方无法准确标识发送方主机
NAT 打破了分层模型的隔离性
...
IPv6
IPv6 的地址相比 IPv4 扩充了许多,共 16 bytes
IPv6 没有提供校验和字段
IPv6 的首部长度是固定的
IPv6 允许简写
E.g. 8000:0000:0000:0000:0123:4567:89AB:CDEF -> 8000::0123:4567:89AB:CDEF
Internet Control Protocols
ARP
Address Resolution Protocol
用于解决 同一个局域网 上 IP 地址和硬件地址的映射问题
请求的目的 MAC 地址为 FF-FF-FF-FF-FF-FF
sequenceDiagram
participant A as PC
participant B as Target
A->>B: who has *.*.*.* ?(广播)
B->>A: (单播)
DHCP
Dynamic Host Configuration Protocol
sequenceDiagram
participant C as PC
participant D as DHCP-Server
C ->> D: 寻找DHCP服务器(广播,0.0.0.0 -> FF.FF.FF.FF)
D ->> C: 回复许可(广播,DHCP地址 -> FF.FF.FF.FF)
C ->> D: 确认获取IP(广播,0.0.0.0 -> FF.FF.FF.FF)
D ->> C: DHCP确认(广播,DHCP地址 -> FF.FF.FF.FF)
ICMP
Internet Control Message Protocol
ICMP 分为 询问报文 和 差错报文 两种类型
ICMP 询问报文
回送请求 Echo and echo reply:PING 使用的报文
时间戳请求 Timestamp request/reply:Traceroute 使用的报文
路由器询问 Router advertisement/solicitation
ICMP 差错报文
终点不可达 Destination unreachable:当数据报不能被路由器/主机交付时
源点抑制 Source quench:当数据报因拥塞不可达时
时间超过 Time exceeded:当数据报的 TTL 为零时
参数问题 Parameter problem:当数据报的首部有字段的值不正确时
改变路由 Redirect:当路由器发生改变时
不会发送 ICMP 差错报文的几种情况
已经携带 ICMP 差错报文
第一个分片已经携带 ICMP 差错报文,后面的分片不再携带
使用 组播 传播时
Mobile Internet Protocol
根据 IP 的性质,IP 大部分情况下是固定的,那么移动设备的 IP 该如何快速、安全地解决不同路由器的问题?
首先,移动设备本身会存在一个 Home Agent,数据总是先被发送给 Home Agent,然后再发送给当前连接的 Foreign Agent,最后发送给移动设备。
节点 使用 ICMP 的 Router advertisement/solicitation 找到附近的路由器,当发现路由器不一样时,在新网络中通过 DHCP 获取一个新的 IP 地址,并告知 Home agent 自己现在的 IP。